// 引入用户集合构造函数
const { User } = require("../../../model/user");
// 引入题目集合构造函数
const { Article } = require("../../../model/article");
// 引入留言集合构造函数
const Comment = require("../../../model/comment");

module.exports = async (req, res) => {
  // 结构获取请求参数id值
  const { id } = req.params;
  // 1. 根据id删除用户
  const flag = await User.findOneAndDelete({ _id: id });
  // 1.1 删除该用户的所有留言
  await Comment.deleteMany({ user: id });

  // 2. 找出该用户的发表的题目
  const articles = await Article.find({ Tauthor: id });
  // 3. 如果找到了
  if (articles) {
    // 4. 查询出所有学生
    let students = await User.find({ role: "student" }).populate("title1");
    // 5. 遍历过滤出指导老师为该用户的学生
    students = students.filter(item => {
      if (item.title1) {
        return item.title1.Tauthor == id;
      }
    });
    // 6. 遍历过滤出来的学生，更新他的题目状态
    if (students.length > 0) {
      console.log(111);
      students.forEach(async item => {
        await User.updateOne({ _id: item._id }, { title1: null, selected: false, selectTime: null });
      });
    }
    // 7. 最后删除该用户的所有题目
    await Article.deleteMany({ Tauthor: id });
  }

  // 如果删除成功
  if (flag) {
    res.send({
      meta: {
        msg: "删除用户成功",
        status: 200
      }
    });
  } else {
    // 删除失败
    res.send({
      data: {
        msg: "删除用户失败"
      },
      meta: {
        status: 400
      }
    });
  }
};
